package com.yicheng.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yicheng.controller.utils.R;
import com.yicheng.entity.User;
import com.yicheng.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@CrossOrigin//解决跨域的问题
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

//    @GetMapping("/findAll")//没有分页的显示列表
//    public List<User> findAll(){
//        return userService.list();
//    }


    @PostMapping("/add")//添加
    public R add(@RequestBody User user){
        R r = new R();
        try{
            userService.save(user);
            r.setMsg("用户信息保存成功！");
        }catch(Exception e){
            e.printStackTrace();
            r.setStatus(false);
            r.setMsg("系统错误：保存用户失败，请稍后再试...");
        }
        return r;
    }

    @GetMapping("/delete")//删除
    public R delete(String id){
        R r = new R();
        try {
            userService.removeById(id);
            r.setMsg("删除用户信息成功！");
        }catch(Exception e){
            e.printStackTrace();
            r.setStatus(false);
            r.setMsg("系统错误：删除用户失败，请重试...");
        }
        return r;
    }

    @PostMapping("/update")//更新
    public R update(@RequestBody User user){
        R r = new R();
        try{
            userService.updateById(user);
            r.setMsg("用户信息更新成功！");
        }catch (Exception e){
            e.printStackTrace();
            r.setStatus(false);
            r.setMsg("系统错误：用户信息更新失败，请重试...");
        }
        return r;
    }

    @GetMapping("/selectOne")//查询一个
    public User selectOne(String id){
        return userService.getById(id);
    }

    @GetMapping("/findAll")//分页查询
    public R getPage(int currentPage,int pageSize){
        //如果当前页码值大于了总页码值，那么重新执行查询操作，使用最大页码值作为当前页码值
        IPage<User> page = userService.getPage(currentPage, pageSize);
        if(currentPage > page.getPages())
            page = userService.getPage((int)page.getPages(), pageSize);
        R r = new R();
        r.setStatus(true);
        r.setUser(page);
        return r;
    }
}
